package gramatica;


import java.util.ArrayList;
import java.util.Iterator;

import simbolo.Simbolo;

public class ParteDerecha implements Comparable {
	
	private ArrayList<Simbolo> simbolos;

	public ArrayList<Simbolo> getSimbolos() {
		return simbolos;
	}

	public void setSimbolos(ArrayList<Simbolo> parteDerecha) {
		this.simbolos = parteDerecha;
	}
	
	public Simbolo primero(){
		return simbolos.get(0);
	}
	
	public Simbolo ultimo(){
		return simbolos.get(simbolos.size()-1);
	}

	public int compareTo(Object otro) {
		int resultado = 0;
		ParteDerecha otraParteDerecha = (ParteDerecha) otro;
		Iterator miIt = this.simbolos.iterator();
		Iterator suIt = otraParteDerecha.simbolos.iterator();
		
		while(miIt.hasNext() && suIt.hasNext() && (resultado == 0)) {
			resultado = ((Simbolo) miIt.next()).compareTo((Simbolo) suIt.next());
		}
		
		if (resultado == 0) {
			if (this.simbolos.size() > otraParteDerecha.simbolos.size()) {
				resultado = 1;
			}
			else {
				if (this.simbolos.size() < otraParteDerecha.simbolos.size()) {
					resultado = -1;
				}
			}
		}
		
		return resultado;
	}
	
	
	public static ParteDerecha getFromString(String cadena){
		ParteDerecha pdRet = null;
		int longitud = cadena.length();
		if(longitud > 0){
			pdRet = new ParteDerecha();
			ArrayList<Simbolo> simbolos = new ArrayList<Simbolo>();
			pdRet.simbolos = simbolos;
			int i = 0;
			while(i< longitud){
				if(cadena.charAt(i)!= '<' && cadena.charAt(i)!= '>' && cadena.charAt(i)!= '='){
					pdRet.simbolos.add(new Simbolo(cadena.charAt(i)));
				}
				i++;
			}
		}
		return pdRet;
	}
		
	public String toString() {
		return simbolos.toString();
	}
}
